package com.xmzs.midjourney.domain.bo;

import cn.hutool.core.date.DateTime;
import com.xmzs.common.mybatis.core.domain.BaseEntity;
import com.xmzs.midjourney.domain.MjRoomMsg;
import com.xmzs.midjourney.enums.MessageTypeEnum;
import com.xmzs.midjourney.enums.MidjourneyMsgActionEnum;
import com.xmzs.midjourney.enums.MidjourneyMsgStatusEnum;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.Date;

/**
 * Midjourney 创作记录业务对象 mj_room_msg
 *
 * @author lixg
 * @date 2023-08-09
 */
@Data
@AutoMapper(target = MjRoomMsg.class, reverseConvertGenerate = false)
public class MjRoomMsgBo implements Serializable {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空")
    private Long id;

    /**
     * 会话 id
     */
    @NotNull(message = "会话 id不能为空" )
    private Long mjRoomId;

    /**
     * 用户 id
     */
    @NotBlank(message = "用户 id不能为空" )
    private String userId;

    /***
     * MJ服务器ID
     */
    private String guildId;

    /**
     * 消息类型
     */
    @NotNull(message = "消息类型不能为空" )
    private MessageTypeEnum type;

    /**
     * 用户输入
     */
    @NotBlank(message = "用户输入不能为空" )
    private String prompt;

    /**
     * 最终的输入
     */
    @NotBlank(message = "最终的输入不能为空" )
    private String finalPrompt;

    /**
     * 响应内容
     */
    @NotBlank(message = "响应内容不能为空" )
    private String responseContent;

    /**
     * 指令动作
     */
    @NotBlank(message = "指令动作不能为空" )
    private MidjourneyMsgActionEnum action;

    /**
     * 压缩图名称
     */
    @NotBlank(message = "压缩图名称不能为空" )
    private String compressedImageName;

    /**
     * 原图名称
     */
    @NotBlank(message = "原图名称不能为空" )
    private String originalImageName;

    /**
     * uv 指令的父消息 id
     */
    @NotNull(message = "uv 指令的父消息 id不能为空" )
    private Integer uvParentId;

    /**
     * u 指令使用比特位
     */
    @NotNull(message = "u 指令使用比特位不能为空" )
    private Integer uUseBit;

    /**
     * uv 位置
     */
    @NotNull(message = "uv 位置不能为空" )
    private Integer uvIndex;

    /**
     * 状态
     */
    @NotNull(message = "状态不能为空" )
    private MidjourneyMsgStatusEnum status;

    /**
     * discord 结束时间
     */
    @NotNull(message = "discord 结束时间不能为空" )
    private Date discordFinishTime;

    /**
     * discord 开始时间
     */
    @NotNull(message = "discord 开始时间不能为空" )
    private Date discordStartTime;

    /**
     * discord 消息 id
     */
    @NotBlank(message = "discord 消息 id不能为空" )
    private String discordMessageId;

    /**
     * discord 频道 id
     */
    @NotBlank(message = "discord 频道 id不能为空" )
    private String discordChannelId;

    /**
     * discord 图片地址
     */
    @NotBlank(message = "discord 图片地址不能为空" )
    private String discordImageUrl;

    /**
     * 模板ID
     */
    @NotBlank(message = "模板ID不能为空" )
    private String templateId;

    /**
     * 失败原因
     */
    @NotBlank(message = "失败原因不能为空" )
    private String failureReason;

    /**
     * 是否删除 0 否 1 是
     */
    @NotNull(message = "是否删除 0 否 1 是不能为空" )
    private Boolean isDeleted;

    private Date createTime;

    private Date updateTime;



}
